﻿/**********************************************************************
 * @file   FITKLoadPowerSourcesSEAShell.h
 * @brief  载荷的SEA板功率源数据类声明
 * @author liuzhonghua (liuzhonghuaszch@163.com)
 * @date   2024-12-05
 *********************************************************************/

#ifndef _FITK_LOAD_POWERSOURCES_SEASHELL_H_
#define _FITK_LOAD_POWERSOURCES_SEASHELL_H_

#include "FITKAcousticsPhysicsAPI.h"
#include "FITKLoadAbsPowerSources.h"

namespace Acoustics
{
    class FITKAcousticsAbstractSpectra;
    /**
     * @brief  载荷的SEA板功率源数据类
     * @author liuzhonghua (liuzhonghuaszch@163.com)
     * @date   2024-12-05
     */
    class  FITKAcousticsPhysicsAPI FITKLoadPowerSourcesSEAShell :
        public FITKLoadAbsPowerSources
    {
        FITKCLASS(Acoustics, FITKLoadPowerSourcesSEAShell);
        Q_OBJECT;
    public:
        /**
         * @brief    Create the FITKLoadPowerSourcesSEAShell object
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        explicit FITKLoadPowerSourcesSEAShell();
        /**
         * @brief    Destroy the FITKLoadPowerSourcesSEAShell object
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        virtual ~FITKLoadPowerSourcesSEAShell();
        /**
         * @brief    Get the Acoustics Load Type object
         * @return   AcousticsLoadType
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        virtual AcousticsLoadType getAcousticsLoadType() override;
        /**
         * @brief    拷贝数据
         * @param[i] obj
         * @return   bool
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        virtual bool copy(FITKAbstractDataObject* obj) override;
        /**
         * @brief    获取弯曲波频谱
         * @return   int     弯曲波频谱id
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        int getFlexureSpectraID();
        /**
         * @brief    获取弯曲波频谱
         * @return   FITKAcousticsAbstractSpectra*   弯曲波频谱
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        FITKAcousticsAbstractSpectra* getFlexureSpectra();
        /**
         * @brief    设置弯曲波
         * @param[i] id       弯曲波频谱id
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        void setFlexureSpectraID(int id);
        /**
         * @brief    获取拉伸波频谱
         * @return   int     拉伸波频谱id
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        int getExtensionSpectraID();
        /**
         * @brief    获取拉伸波频谱
         * @return   FITKAcousticsAbstractSpectra*  拉伸波频谱
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        FITKAcousticsAbstractSpectra* getExtensionSpectra();
        /**
         * @brief    设置拉伸波频谱
         * @param[i] id      拉伸波频谱id
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        void setExtensionSpectraID(int id);
        /**
         * @brief    获取剪切波频谱
         * @return   int     剪切波频谱id
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        int getShearSpectraID();
        /**
         * @brief    获取剪切波频谱
         * @return   FITKAcousticsAbstractSpectra*   剪切波频谱
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        FITKAcousticsAbstractSpectra* getShearSpectra();
        /**
         * @brief    设置剪切波频谱
         * @param[i] id      剪切波频谱id
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        void setShearSpectraID(int id);

    private:
        /**
         * @brief  拉伸波频谱id
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-05
         */
        int _extensionSpectraID{ -1 };
        /**
         * @brief  剪切波频谱id
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-05
         */
        int _shearSpectraID{ -1 };
        /**
         * @brief  弯曲波频谱id
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-05
         */
        int _flexureSpectraID{ -1 };
    };
}


#endif // _FITK_LOAD_POWERSOURCES_SEASHELL_H_